//2017-12-15 郑捷 创建
#ifndef ModbusSlaveTCP_H
#define ModbusSlaveTCP_H

#if defined(ARDUINO) && ARDUINO >= 100 // 版本兼容设置
	#include "Arduino.h"
#else
	#include "WProgram.h"
#endif

#include <SPI.h>
#include <Ethernet.h>

class ModbusSlaveTCP {
public:
	void begin(EthernetServer *Server,unsigned int *Data,unsigned int Count);	//初始化函数
	void task(void);									//通信处理函数
	unsigned char SlaveID=1;	//节点号
private:
	void dataHandle(void); //指令处理函数
	void responseError(unsigned char wrongNumber);	//错误信息返回函数
	EthernetServer *pModbusServer;		//用于保存使用MODBUS通信的服务器
	unsigned int *pDataTable; 			//指针链接到MODBUS寄存器数据库
	unsigned int DataTableCount=0;		//MODBUS寄存器数据库长度
	#define bufferSize 256				//一帧数据的最大字节数量
	unsigned char frame[bufferSize];	//用于保存接收或发送的数据
	int receiveBytes=0;		//接收到数据的字节数
	int needSendBytes=0;	//需要发送数据的字节数
};
#endif
